#include <iostream>
#include <chrono>
#include <thread>
using namespace std;

int main(){
    int n_A;
    cout << "Введите количество элементов в массиве A: ";
    cin >> n_A;
    vector<char> A;
    cout << "Введите массив A: ";
    for (int i = 0; i < n_A; i++) {
        char letter;
        cin >> letter;
        A.push_back(letter);
    }
    
    int n_B;
    cout << endl << "Введите количество элементов в массиве B: ";
    cin >> n_B;
    vector<char> B;
    cout << "Введите массив B: ";
    for (int i = 0; i < n_B; i++) {
        char letter;
        cin >> letter;
        B.push_back(letter);
    }
    
    //сама прога пошла
    while(1){
        this_thread::sleep_for(chrono::seconds(2));
        cout << endl << "Выберите операцию, введи её номер" << endl << "1. ˇ (объединение множество)" << endl << "2. ⌒ (пересечение множест)" << endl << "3. ⥹ (A является подмножеством)" << endl << "4. / (разность множеств)" << endl << "5. Выход из программы" << endl;
    
        int m;
        int check = 0;
        int proverka = 0;
        cout << "Выбираю: ";
        cin >> m;
        cout << endl;

        switch (m){
        case 1:
            check = 0;
            proverka = 0;
            
            for(int i = 0; i < n_A; i++){
                cout << A[i] << " ";
            }
            
            for(int j = 0; j < n_B; j++){
                for(int i = 0; i < n_A; i++){
                    if(B[j] == A[i]){
                        check++;
                    }
                }
                if(check == 0){
                    cout << B[j] << " ";
                }
                check = 0;
            }
            cout << endl;
            break;
            
        case 2:
            check = 0;
            proverka = 0;
            for(int i = 0; i < n_A; i++){
                for(int j = 0; j < n_B; j++){
                    if(A[i] == B[j]){
                        if(check==0){
                            cout << "Результат пересечения: " << A[i] << " ";
                            check++;
                            proverka++;
                        }else{
                            cout << A[i] << " ";
                        }
                    }
                }
            }
            if(proverka == 0){
                cout << "Нет эллементов удовлетворяющих условию" << endl;
            }
            cout << endl;
            break;
        
        case 3:
            check = 0;
            proverka = 0;
            for(int i = 0; i < n_A; i++){
                for(int j = 0; j < n_B; j++){
                    if(A[i] == B[j]){
                        check++;
                    }
                }
            }
            if(check==n_A){
                cout << "Множество A является подмножеством B" << endl;
            }else{
                cout << "Множество A не является подмножеством B" << endl;
            }
        
        case 4:
            check = 0;
            proverka = 0;
            for(int i = 0; i < n_A; i++){
                for(int j = 0; j < n_B; j++){
                    if(A[i] != B[j]){
                        check++;
                    }
                }
                if(check == n_B){
                    if (proverka == 0){
                        cout << "Уник. эл массива A: " << A[i] << " ";
                        proverka++;
                    }else{
                        cout << A[i] << " ";
                    }
                }
                check = 0;
            }
            cout << endl;
            break;
             
        case 5:
            return 0 ;
                
        default:
            cout << "ОШИБКА 1010101011101" << endl << "Выбери что-то другое" << endl;
        
    }
    
    }
}

